from django.contrib.auth import logout
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render

from blog.models import User
import hashlib
from django.dispatch import Signal


def login_view(request):
    if request.method == 'GET':
        if request.COOKIES.get('username') and request.session.get('uuid'):
            return HttpResponse('session登录')
        elif request.COOKIES.get('username') and request.COOKIES.get('uuid'):
            request.session['username'] = request.COOKIES.get('username')
            request.session['uuid'] = request.COOKIES.get('uuid')
            return HttpResponse('cook登录')
        return render(request, 'login.html')

    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']

        try:
            user = User.objects.get(username=username)
        except Exception as e:
            return HttpResponse('用户名不存在')

        try:
            md = hashlib.md5()
            md.update(password.encode())
            password = md.hexdigest()
            if password != user.password:
                return HttpResponse('密码错误')
        except Exception as e:
            print('密码异常')
            return HttpResponse('密码异常')

        request.session['username'] = username
        request.session['uuid'] = user.id

        resp = HttpResponse('登录成功')
        if'remember' in request.POST:
            resp.set_cookie('username', username, 3600 * 24 * 7)
            resp.set_cookie('uuid', user.id, 3600 * 24 * 7)

        return resp


def reg_view(request):
    if request.method == 'GET':
        return render(request,'register.html')
    elif request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        old_users = User.objects.filter(username=username)
        if old_users:
            return HttpResponse('用户名已注册')

        m = hashlib.md5()
        m.update(password.encode())
        password = m.hexdigest()
        User.objects.create(username=username, password=password)
        request.session['username'] = username
        return HttpResponseRedirect('/blog/index/')


def index(request):
    return render(request, 'index.html')


def logout_view(request):
    logout(request)
    return HttpResponseRedirect('/blog/index')